<?xml version="1.0" encoding="UTF-8"?>

<configuration status="off">
    <!--先定义所有的appender -->
    <appenders>
        <!--这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息（onMatch），其他的直接拒绝（onMismatch） -->
            <ThresholdFilter level="info" onMatch="ACCEPT"
                             onMismatch="DENY"/>
            <!--这个都知道是输出日志的格式 -->
            <PatternLayout
                    pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>

        <!--文件会打印出所有信息，这个log每次运行程序会自动清空，由append属性决定，这个也挺有用的，适合临时测试用 -->
        <File name="log" fileName="d:/log/test.log" append="false">
            <Filters>
                <ThresholdFilter level="debug" onMatch="ACCEPT"
                                 onMismatch="DENY"/>
            </Filters>
            <PatternLayout
                    pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--文件会打印出sql信息，这个log每次运行程序会自动清空，由append属性决定，这个也挺有用的，适合临时测试用 -->
        <File name="sqlLog" fileName="d:/log/sqlLog.log" append="false">
            <Filters>
                <ThresholdFilter level="debug" onMatch="ACCEPT"
                                 onMismatch="DENY"/>
            </Filters>
            <PatternLayout
                    pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <File name="actionLog" fileName="d:/log/actionLog.log" append="false">
            <Filters>
                <ThresholdFilter level="debug" onMatch="ACCEPT"
                                 onMismatch="DENY"/>
            </Filters>
            <PatternLayout
                    pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--文件会打印出sql参数信息，这个log每次运行程序会自动清空，由append属性决定，这个也挺有用的，适合临时测试用 -->
        <File name="sqlParamLog" fileName="d:/log/sqlParamLog.log" append="false">
            <Filters>
                <ThresholdFilter level="debug" onMatch="DENY"
                                 onMismatch="NEUTRAL"/>
                <ThresholdFilter level="trace" onMatch="ACCEPT"
                                 onMismatch="DENY"/>
            </Filters>
            <PatternLayout
                    pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--这个会打印出所有的信息，每次大小超过size，则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩，作为存档 -->
        <RollingFile name="traceApp" fileName="d:/logs/traceApp.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.traceLog.gz">
            <ThresholdFilter level="TRACE" onMatch="ACCEPT"
                             onMismatch="DENY"/>
            <PatternLayout
                    pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="1MB"/>
        </RollingFile>

        <!--这个会打印出所有错误的信息，每次大小超过size，则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩，作为存档 -->
        <RollingFile name="errorApp" fileName="d:/logs/errorApp.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.errorLog.gz">
            <ThresholdFilter level="error" onMatch="ACCEPT"
                             onMismatch="DENY"/>
            <PatternLayout
                    pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="1MB"/>
        </RollingFile>

        <!--这个会打印出所有严重错误信息，每次大小超过size，则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩，作为存档 -->
        <RollingFile name="fatalApp" fileName="d:/logs/fatalApp.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.fatalLog.gz">
            <ThresholdFilter level="fatal" onMatch="ACCEPT"
                             onMismatch="DENY"/>
            <PatternLayout
                    pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="1MB"/>
        </RollingFile>

    </appenders>

    <!--然后定义logger，只有定义了logger并引入的appender，appender才会生效 -->
    <loggers>
        <logger name="org.redisson.connection" level="error" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <logger name="${packagePath}.dal.mapper" level="TRACE" additivity="false">
            <appender-ref ref="sqlLog"/>
        </logger>
        <!--建立一个默认的root的logger -->
        <root level="TRACE">
            <appender-ref ref="Console"/>
            <appender-ref ref="log"/>
            <!-- 	 <appender-ref ref="traceApp" />
                <appender-ref ref="errorApp" />
                <appender-ref ref="fatalApp" />  -->
        </root>
    </loggers>
</configuration>